package epsofts.Neutron;

/**
 * Interface sp�cifiant ce que doit pouvoir faire un joueur de Neutron.
 * 
 * @version 1.0
 * @created 14-sept.-2006 22:48:04
 */
public interface IJoueur
{
	/** Attributs de classe que devraient définir les classes héritières pour pouvoir être chargées dynamiquement correctement. 
	 *
	 *	public static final String LABEL = "AI MiniMax";
	 *	public static final Boolean ENABLED = true;
	 */
	
	/**
	 * Donne le tour de jeu au joueur (pour le plateau donn�) et attend une
	 * proposition de mouvement (Coup).
	 * 
	 * @param plateau
	 *            Plateau � partir duquel le joueur doit jouer.
	 * @throws InterruptedException 
	 */
	public Coup Jouer(final Plateau plateau) throws InterruptedException;

	/**
	 * Doit interrompre le tour du joueur si celui-ci �tait en train de jouer.
	 * Doit bloquer jusqu'à ce que l'interruption soit correctement gérée.
	 */
	public void Stopper();
	
	/**
	 *  Averti le joueur de la fin du jeu.
	 */
	public void OnJeuFini(final eCase i_vainqueur);

}
